package eva.savant.business.material.view

import eva.savant.businessobject.mt.AlmaceneroAlmacen
import eva.savant.businessobject.mt.Almacenero
import eva.savant.businessobject.mt.Almacen
import eva.savant.businessobject.ad.Usuario
import eva.savant.core.view.Maestro

import javax.faces.bean.ManagedBean
import javax.faces.bean.SessionScoped
import javax.annotation.PostConstruct
import javax.faces.convert.Converter

@SessionScoped
@ManagedBean(name = 'IMAlmacenero')
public class IMAlmacenero extends Maestro {

  def almacen

  def lsAlmacen

  @PostConstruct
  public void cleanEntity() {

    almacen= null

    entity= new Almacenero(); init()

    lsAlmacen= new ArrayList<Almacen>()
  }

  public void editEntity(Object id) {

    entity= (Almacenero) get(entity.class, id)


    lsAlmacen= new ArrayList<Almacen>()

    for(x in entity.lsAlmaceneroAlmacen)

    lsAlmacen.add(x.almacen)
  }

  public boolean mergeEntity(Object entity) {

    entity= (Almacenero) entity

    entity.lsAlmaceneroAlmacen= new ArrayList()


    for(almacen in lsAlmacen)

    entity.lsAlmaceneroAlmacen.add(new AlmaceneroAlmacen(almacenero: entity,
                                                         almacen: almacen,
                                                         operacionId: ALTA,
                                                         sociedadId: sociedad.id,
                                                         usuarioId: usuario.id))

    return merge(entity) != null
  }

  public void addAlmacen() {

    delAlmacen(almacen.id)

    lsAlmacen.add(almacen)

    almacen= null
  }

  public void delAlmacen(String almacenId) {

    for(almacen in lsAlmacen)

    if(almacen.id.equals(almacenId)) lsAlmacen.remove(almacen)
  }

  public List complete(String value) { return completeLike(Usuario,'persona.nombre',value) }

  public Converter getConverter() { return converterLike(Usuario) }

  public List completeAlmacen(String value) { return completeLike(Almacen,'nombre',value) }

  public Converter getConverterAlmacen() { return converterLike(Almacen) }

}
